package com.demo.Sort;

/**
 * 插入排序
 */
public class InsertSort {
    public static void main(String[] args) {
        int[] a = {20, 40, 30, 10, 60, 50};
        insertSort(a, a.length);
        for (int i : a) {
            System.out.print("  " + i);
        }
    }

    /**
     * @param a 数组
     * @param b 数组的长度
     */
    private static void insertSort(int[] a, int b) {
        int i, j, k;
        for (i = 1; i < b; i++) {
            //为a[i]在前面a[0  i-1]的有序区域寻找一个合适的位置
            for (j = i - 1; j >= 0; j--)
                if (a[j] < a[i])
                    break;


            //如果找到了合适的位置
            if (j != i - 1) {
                //将比a[i]大的数据向后移
                int temp = a[i];
                for (k = i - 1; k > j; k--)
                    a[k + 1] = a[k];
                //将a[i]放到正确的位置上
                a[k + 1] = temp;

            }
        }
    }
}
